package com.zpark.updater;

import com.zpark.entity.HistoryData;
import com.zpark.entity.SuccessData;

import java.util.List;

public class UpdaterChain {
    private List<Updater> updaters;//链条上的所有责任；所有更新模型模型：Updater这个抽象类的子类

    //只提供带参数的构造方法：要使用这个链，就必须把所有的责任都注册进来
    public UpdaterChain(List<Updater> updaters) {
        this.updaters = updaters;
    }

    private int position;//位置，链条走到了哪里；什么时候结束链条

    public void doChain(SuccessData successData, HistoryData historyData){
//        System.out.println(position);
        if(position<updaters.size()){//还没有走到链条的最后

            Updater updater = updaters.get(position);

            position++;//让链条中执行的位置往后挪

            //执行链条中的这个责任
            updater.update(successData,historyData,this);


        }
    }
}
